home *** CD-ROM | disk | FTP | other *** search
/ Netscape Plug-Ins Developer's Kit / Netscape_Plug-Ins_Developers_Kit.iso / CGIPERL / MACPERL / MSRCE418.HQX / Perl Source ƒ / Perl / macscripts / Aete2Rez < prev    next >
Encoding:
Text File  |  1994-09-18  |  5.5 KB  |  280 lines

  1. Perl -Sx "{0}" {"Parameters"} ; Exit
  2. #!perl
  3.  
  4. while(<>) {
  5.     next if /^\s+$/;
  6.     next if /^\s*#/;
  7.     
  8.     if (/@TITLE\s+\"([^"]*)\"/) {
  9.         print "resource \'aete\' (0, \"$1\") {\n";
  10.     } elsif (/@VERSION\s+(\d+)\.(\d+)/) {
  11.         printf("\t0x%02d, 0x%02d, english, roman,\n", $1, $2);
  12.     } elsif (/@SUITE\s+\"([^"]*)\"\s*,\s*\"([^"]*)\"\s*,\s*\'([^']*)\'/) {
  13.         if ($suites++) {
  14.             &finishsuite();
  15.             
  16.             print "\n";
  17.         } else {
  18.             print "\t{\n";
  19.         }
  20.         
  21.         ($events, $classes, $comparisons, $enumerations) = (0, 0, 0, 0);
  22.         
  23.         print "\t\t\"$1\", \"$2\", \'$3\', 1, 1,\n";
  24.     } elsif (/@EVENT\s+\"([^"]*)\"\s*,\s*\"([^"]*)\"\s*,\s*\'([^']*)\'\s*,\s*\'([^']*)\'/) {
  25.         if ($events++) {
  26.             &finishevent();
  27.             print "\n";
  28.         } else {
  29.             print "\t\t{\n";
  30.         }
  31.  
  32.         print "\t\t\t\"$1\", \"$2\", \'$3\', \'$4\',\n";
  33.         
  34.         $params = 0;
  35.     } elsif (/@REPLY\s+\'([^']*)\'\s*,\s*\"([^"]*)\"\s*,\s*(\w+)\s*,\s*(\w+)\s*,\s*(\w+)/) {
  36.         
  37.         print "\t\t\t\'$1\', \"$2\", ";
  38.         
  39.         if ($3 eq "REQ") {
  40.             print "replyRequired, ";
  41.         } elsif ($3 eq "OPT") {
  42.             print "replyOptional, ";
  43.         } else {
  44.             die;
  45.         }
  46.         
  47.         if ($4 eq "SINGLE") {
  48.             print "singleItem, ";
  49.         } elsif ($4 eq "LIST") {
  50.             print "listOfItems, ";
  51.         } else {
  52.             die;
  53.         }
  54.         
  55.         if ($5 eq "ENUM") {
  56.             print "enumerated, ";
  57.         } elsif ($5 eq "NOENUM") {
  58.             print "notEnumerated, ";
  59.         } else { 
  60.             die;
  61.         }
  62.         
  63.         print "reserved, " x 13, "\n";
  64.     } elsif (/@DIRECT\s+\'([^']*)\'\s*,\s*\"([^"]*)\"\s*,\s*(\w+)\s*,\s*(\w+)\s*,\s*(\w+)s*,\s*(\w+)/) {
  65.         
  66.         print "\t\t\t\'$1\', \"$2\", ";
  67.         
  68.         if ($3 eq "REQ") {
  69.             print "directParamRequired, ";
  70.         } elsif ($3 eq "OPT") {
  71.             print "directParamOptional, ";
  72.         } else {
  73.             die;
  74.         }
  75.         
  76.         if ($4 eq "SINGLE") {
  77.             print "singleItem, ";
  78.         } elsif ($4 eq "LIST") {
  79.             print "listOfItems, ";
  80.         } else { 
  81.             die;
  82.         }
  83.         
  84.         if ($5 eq "ENUM") {
  85.             print "enumerated,\n";
  86.         } elsif ($5 eq "NOENUM") {
  87.             print "notEnumerated,\n";
  88.         } else {
  89.             die;
  90.         }
  91.         
  92.         if ($6 eq "CHANGE") {
  93.             print "\t\t\tchangesState, ";
  94.         } elsif ($6 eq "NOCHANGE") {
  95.             print "\t\t\tdoesntChangeState, ";
  96.         } else { 
  97.             die;
  98.         }
  99.         
  100.         print "reserved, " x 12, "\n";        
  101.     } elsif (/@PARAM\s+\"([^"]*)\"\s*,\s*\'([^']*)\'\s*,\s*\'([^']*)\'\s*,\s*\"([^"]*)\"\s*,\s*(\w+)\s*,\s*(\w+)\s*,\s*(\w+)s*/) {
  102.         
  103.         print "\t\t\t{\n" unless $params++;
  104.         
  105.         print "\t\t\t\t\"$1\", \'$2\', \'$3\', \"$4\", ";
  106.         
  107.         if ($5 eq "REQ") {
  108.             print "required, ";
  109.         } elsif ($5 eq "OPT") {
  110.             print "optional, ";
  111.         } else {
  112.             die;
  113.         }
  114.         
  115.         if ($6 eq "SINGLE") {
  116.             print "singleItem, ";
  117.         } elsif ($6 eq "LIST") {
  118.             print "listOfItems, ";
  119.         } else { 
  120.             die;
  121.         }
  122.         
  123.         if ($7 eq "ENUM") {
  124.             print "enumerated, ";
  125.         } elsif ($7 eq "NOENUM") {
  126.             print "notEnumerated, ";
  127.         } else { 
  128.             die;
  129.         }
  130.         
  131.         print "reserved, " x 13, "\n";                
  132.     } elsif (/@CLASS\s+\"([^"]*)\"\s*,\s*\'([^']*)\'\s*,\s*\"([^"]*)\"/) {
  133.         if ($classes++) {
  134.             &finishclass();
  135.         } else {        
  136.             if ($events) {
  137.                 &finishevent();
  138.                 
  139.                 print "\t\t},\n";
  140.             } else {
  141.                 print "\t\t{},\n";
  142.             }
  143.             
  144.             print "\t\t{\n";
  145.         }
  146.         
  147.         print "\t\t\t\"$1\", \'$2\', \"$3\",\n";
  148.         
  149.         ($properties,$elements) = (0, 0);
  150.     } elsif (/@PROPERTY\s+\"([^"]*)\"\s*,\s*\'([^']*)\'\s*,\s*\'([^']*)\'\s*,\s*\"([^"]*)\"\s*,\s*(\w+)\s*,\s*(\w+)\s*,\s*(\w+)/) {
  151.         print "\t\t\t{\n" unless ($properties++);
  152.         
  153.         print "\t\t\t\t\"$1\", \'$2\', \'$3\', \"$4\", reserved, ";
  154.         
  155.         if ($5 eq "SINGLE") {
  156.             print "singleItem, ";
  157.         } elsif ($5 eq "LIST") {
  158.             print "listOfItems, ";
  159.         } else { 
  160.             die;
  161.         }
  162.         
  163.         if ($6 eq "ENUM") {
  164.             print "enumerated, ";
  165.         } elsif ($6 eq "NOENUM") {
  166.             print "notEnumerated, ";
  167.         } else { 
  168.             die;
  169.         }
  170.         
  171.         if ($7 eq "RDWR") {
  172.             print "readWrite, ";
  173.         } elsif ($7 eq "RDONLY") {
  174.             print "readOnly, ";
  175.         } else {
  176.             die;
  177.         }
  178.         
  179.         print "reserved, " x 12, "\n";        
  180.     } elsif (/@ELEMENT\s+\'([^']*)\'\s*,\s*(.*)/) {
  181.         unless ($elements++) {
  182.             if ($properties++) {
  183.                 print "\t\t\t},\n";
  184.             } else {
  185.                 print "\t\t\t{},\n";
  186.             }
  187.                 
  188.             print "\t\t\t{\n";
  189.         }
  190.         
  191.         $forms = $2;
  192.         $forms =~ s/ABSOLUTE/formAbsolutePosition/;
  193.         $forms =~ s/RELATIVE/formRelativePosition/;
  194.         $forms =~ s/RANGE/formRange/;
  195.         
  196.         print "\t\t\t\t\'$1\', { $forms },\n";
  197.     } elsif (/@ENUMERATION\s+\'([^']*)\'/) {
  198.         if ($enumerations++) {
  199.             &finishenumeration();
  200.         } else {
  201.             if ($comparisons) {
  202.                 &finishcomparison();
  203.                         
  204.                 print "\t\t},\n";
  205.             } elsif ($classes) {
  206.                 &finishclass();
  207.                 print "\t\t},\n\t\t{},\n";
  208.             } elsif ($events) {
  209.                 &finishevent();
  210.                         
  211.                 print "\t\t},\n\t\t{},\n\t\t{},\n";
  212.             } else {
  213.                 print "\t\t{},\n\t\t{},\n\t\t{},\n";
  214.             }
  215.                     
  216.             print "\t\t{\n";
  217.         }
  218.         
  219.         print "\t\t\t\'$1\',\n";
  220.         
  221.         $elements = 0;
  222.     } elsif (/@ENUM\s+\"([^"]*)\"\s*,\s*\'([^']*)\'\s*,\s*\"([^"]*)\"/) {
  223.         if (!$elements++) {
  224.             print "\t\t\t{\n";
  225.         } 
  226.         
  227.         print "\t\t\t\t\"$1\", \'$2\', \"$3\",\n";
  228.     } else {
  229.         die "Syntax error";
  230.     }
  231. }
  232.  
  233. &finishsuite() if $suites;
  234.  
  235. print "\t}\n";
  236. print "};\n";
  237.  
  238. sub finishsuite {
  239.     if ($enumerations) {
  240.         &finishenumeration();
  241.         print "\t\t},\n";
  242.     } elsif ($comparisons) {
  243.         print "\t\t},\n\t\t{},\n";
  244.     } elsif ($classes) {
  245.         &finishclass();
  246.         print "\t\t},\n\t\t{},\n\t\t{},\n";
  247.     } elsif ($events) {
  248.         &finishevent();
  249.         print "\t\t},\n\t\t{},\n\t\t{},\n\t\t{},\n";
  250.     } else {
  251.         print "\t\t{},\n\t\t{},\n\t\t{},\n\t\t{},\n";
  252.     }
  253. }
  254.  
  255. sub finishevent {
  256.     if ($params) {
  257.         print "\t\t\t},\n";
  258.     } else {
  259.         print"\t\t\t{},\n";
  260.     }
  261. }
  262.  
  263. sub finishclass {
  264.     if ($elements) {
  265.         print "\t\t\t},\n";
  266.     } elsif ($properties) {
  267.         print "\t\t\t},\n\t\t\t{},\n";
  268.     } else {
  269.         print "\t\t\t{},\n\t\t\t{},\n";
  270.     }
  271. }
  272.  
  273. sub finishenumeration {
  274.     if ($elements) {
  275.         print "\t\t\t},\n";
  276.     } else {
  277.         print "\t\t\t{},\n";
  278.     }
  279. }
  280.